import { defineConfig, type UserConfigExport } from '@tarojs/cli'

import devConfig from './dev'
import prodConfig from './prod'
import path from 'path'

// https://taro-docs.jd.com/docs/next/config#defineconfig-辅助函数
export default defineConfig<'vite'>(async (merge, ctx) => {
  const baseConfig: UserConfigExport<'vite'> = {
    projectName: 'taro-YiRiZhiJi',
    date: '2025-11-4',
    // designWidth: 750,
    // /*
    designWidth (input) {
      // 配置 NutUI 375 尺寸（兼容 string/number/object 参数）
      const filePath = typeof input === 'object' && input && 'file' in input ? (input as any).file : ''
      if (filePath && filePath.replace(/\\+/g, '/').indexOf('@nutui') > -1) {
        return 375
      }
      // 全局使用 Taro 默认的 750 尺寸
      return 750
    },
    // */
    deviceRatio: {
      640: 2.34 / 2,
      750: 1,
      828: 1.81 / 2,
      375: 2 / 1,
    },
    sourceRoot: 'src',
    // 多端编译打包到不同目录
    outputRoot: `dist/${process.env.TARO_ENV}`,
    plugins: [
      "@tarojs/plugin-generator",
      // 开启HTML插件
      "@tarojs/plugin-html"
    ],

    alias: {
      '@/api': path.resolve(__dirname, '..', 'src/api'),
      '@/assets': path.resolve(__dirname, '..', 'src/assets'),
      '@/baseService': path.resolve(__dirname, '..', 'src/baseService'),
      '@/components': path.resolve(__dirname, '..', 'src/components'),
      '@/localDatabase': path.resolve(__dirname, '..', 'src/localDatabase'),
      '@/pages': path.resolve(__dirname, '..', 'src/pages'),
      '@/router': path.resolve(__dirname, '..', 'src/router'),
      '@/store': path.resolve(__dirname, '..', 'src/store'),
      '@/utils': path.resolve(__dirname, '..', 'src/utils'),
      '@/views': path.resolve(__dirname, '..', 'src/views'),
    },
    defineConstants: {
    },
    copy: {
      patterns: [
      ],
      options: {
      }
    },
    framework: 'react',
    compiler: 'vite',
    mini: {
      postcss: {
        pxtransform: {
          enable: true,
          config: {

          }
        },
        cssModules: {
          enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
          config: {
            namingPattern: 'module', // 转换模式，取值为 global/module
            generateScopedName: '[name]__[local]___[hash:base64:5]'
          }
        }
      },
      enableSourceMap:false,
    },
    h5: {
      devServer:{
        port:8888
      },
      publicPath: '/',
      staticDirectory: 'static',

      miniCssExtractPluginOption: {
        ignoreOrder: true,
        filename: 'css/[name].[hash].css',
        chunkFilename: 'css/[name].[chunkhash].css'
      },
      postcss: {
        autoprefixer: {
          enable: true,
          config: {}
        },
        cssModules: {
          enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
          config: {
            namingPattern: 'module', // 转换模式，取值为 global/module
            generateScopedName: '[name]__[local]___[hash:base64:5]'
          }
        }
      },
    },
    rn: {
      appName: 'taroDemo',
      postcss: {
        cssModules: {
          enable: false, // 默认为 false，如需使用 css modules 功能，则设为 true
        }
      }
    }
  }

  // 此配置运行过程中-连带 browserslist中的环境配置 不起作用—— 可能会有其他配置造成变量重置 question
  // process.env.BROWSERSLIST_ENV = process.env.NODE_ENV

  if (process.env.NODE_ENV === 'development') {
    // 本地开发构建配置（不混淆压缩）
    return merge({}, baseConfig, devConfig)
  }
  // 生产构建配置（默认开启压缩混淆等）
  return merge({}, baseConfig, prodConfig)
})
